/**
 * @file musique.c
 * @brief Fichier source du module musique.
 *
 * @author Rachid Delory, Mamadou Keita, Florian Bernard
 */

/* *********************************************************************

                       Librairies de musique                          

********************************************************************* */

#include "musique.h"

/* *********************************************************************

                        Fonctions                                      

********************************************************************* */
void init_Mus(Musique *ptr)
{
  if(ptr)
    {
      ptr->id=0;
      ptr->piste=0;
      ptr->duree=NULL;
      ptr->paroles=NULL;
      ptr->maj = 0;
      ptr->sup = 0;
    }
}

void liberer_Mus(Musique *ptr)
{
  if(ptr)
    {
      ptr->id=0;
      ptr->piste=0;
      detruire_Tem(&(ptr->duree));
      if(ptr->paroles)
	{
	  free(ptr->paroles);
	  ptr->paroles=NULL;
	}
    }
}

Musique *creer_Mus()
{
	Musique *musique = (Musique *)malloc(1*sizeof(Musique));
	if(musique==NULL)
	{
		fprintf(stderr,"memoire insuffisante");
		exit(EXIT_FAILURE);
	}
	init_Mus(musique);
	return musique;
}

void detruire_Mus(Musique **musique)
{
	if(musique && (musique))
	{
		liberer_Mus((*musique));
		free((*musique));
		(*musique) = NULL;
	}
}

void copier_Mus(Musique **dest, const Musique *src)
{
  if((*dest) == NULL)
    {
      (*dest) = creer_Mus();
    }
  if(src)
    {
      (*dest)->id = src->id;
      (*dest)->piste = src->piste;
      copier_Tem(&((*dest)->duree), src->duree);
      copier_Uti(&((*dest)->paroles), src->paroles);
    }
  else
    detruire_Mus(dest);
}

int getId_Mus(const Musique * ptr)
{
	if(ptr)
		return ptr->id;
	return 0;
}

void setId_Mus(Musique *ptr, const int val)
{
	if(ptr)
		ptr->id = val;
}

int getPiste_Mus(const Musique * ptr)
{
	if(ptr)
		return ptr->piste;
	return 0;
}

void setPiste_Mus(Musique *ptr, const int val)
{	
  if(ptr)
    {
      ptr->piste = val;
    }
}

Temps *getDuree_Mus(const Musique * ptr)
{
	if(ptr)
		return ptr->duree;
	return NULL;
}

void setDuree_Mus(Musique *ptr, const Temps * val)
{
	if(ptr)
	  copier_Tem(&(ptr->duree), val);
}

char * getParoles_Mus(const Musique * ptr)
{
	if(ptr)
		return ptr->paroles;
	return NULL;
}

void setParoles_Mus(Musique *ptr, const char * val)
{
	if(ptr)
	  copier_Uti(&(ptr->paroles), val);
}

void setMaj_Mus(Musique *ptr, const char b)
{
  if(ptr)
    {
      ptr->maj = b;
      if(b == 1)
	ptr->sup = !b;
    }
}

char getMaj_Mus(const Musique *ptr)
{
  if(ptr)
    return ptr->maj;
  return 0;
}

void setSup_Mus(Musique *ptr, const char b)
{
  if(ptr)
    {
      ptr->sup = b;
      if(b == 1)
	ptr->maj = !b;
    }
}

char getSup_Mus(const Musique *ptr)
{
  if(ptr)
    return ptr->sup;
  return 0;
}
